/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionform;

import static gestionform.GestionInfos.CHAMP_DATE_NAISS;
import static gestionform.GestionInfos.CHAMP_LOGIN;
import static gestionform.GestionInfos.CHAMP_NOM;
import static gestionform.GestionInfos.CHAMP_PASS;
import static gestionform.GestionInfos.CHAMP_PRENOM;
import static gestionform.GestionInfos.CHAMP_TYPE_UTILISATEUR;
import static gestionform.GestionInfos.getValeurChamp;
import java.sql.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import model.Enseignant;
import model.Etudiant;
import utils.DateUtils;
import utils.DateUtilsException;

/**
 *
 * @author Paul
 */
public class GestionCompte extends GestionInfos {

    private HashMap<String, String> listeChamps;
    private Enseignant enseignant;
    private Etudiant etudiant;

    public HashMap<String, String> getListeChamps() {
        return listeChamps;
    }

    public GestionCompte() {
    }

    public String getTypeCompte(HttpServletRequest request) {
        String nom = getValeurChamp(request, CHAMP_NOM);
        String prenom = getValeurChamp(request, CHAMP_PRENOM);
        String dateNaissance = getValeurChamp(request, CHAMP_DATE_NAISS);
        String typeUtilisateur = getValeurChamp(request, CHAMP_TYPE_UTILISATEUR);
        String login = getValeurChamp(request, CHAMP_LOGIN);
        String password = getValeurChamp(request, CHAMP_PASS);
        listeChamps = getListeChamps(nom, prenom, dateNaissance, typeUtilisateur, login, password);
        traiterListeChamps(listeChamps);
        traiterPassword(password);
        traiterDateNaissance(dateNaissance);
        if (!erreurs.isEmpty()) {
            resultat = "Il y a des erreurs dans le formulaire de création";
        }
        return typeUtilisateur;
    }

    private void traiterListeChamps(HashMap<String, String> listeChamps) {
        for (Map.Entry<String, String> champ : listeChamps.entrySet()) {
            String idChamp = champ.getKey();
            String valueChamp = champ.getValue();
            validerChamp(idChamp, valueChamp);
        }
    }

    private void validerChamp(String idChamp, String valueChamp) {
        if (valueChamp == null) {
            setErreur(idChamp, "Le champ " + idChamp + " est vide");
        } else if (valueChamp.matches("[0-9]+")) {
            setErreur(idChamp, "Veuillez saisir des caractères pour le champ " + idChamp);
        }
    }

    private HashMap<String, String> getListeChamps(String nom, String prenom, String dateNaissance, String typeUtilisateur, String login, String password) {
        listeChamps = new HashMap<String, String>();
        listeChamps.put(CHAMP_NOM, nom);
        listeChamps.put(CHAMP_PRENOM, prenom);
        listeChamps.put(CHAMP_DATE_NAISS, dateNaissance);
        listeChamps.put(CHAMP_TYPE_UTILISATEUR, typeUtilisateur);
        listeChamps.put(CHAMP_LOGIN, login);
        listeChamps.put(CHAMP_PASS, password);
        return listeChamps;
    }

    private void traiterPassword(String password) {
        if (password != null) {
            if (password.length() < 5) {
                setErreur(CHAMP_PASS, "Le mot de passe doit contenir au moins 5 caractères.");
            }
        }
    }

    private void traiterDateNaissance(String dateNaissance) {
        try {
            DateUtils.getConvertedDateToSQLDate(dateNaissance);
        } catch (DateUtilsException dateEx) {
            setErreur(CHAMP_DATE_NAISS, dateEx.getMessage());
        }
    }
}